package com.yungu.swift.assets.driver.model.dto;

import com.yungu.swift.base.model.BaseDto;
import com.yungu.swift.base.model.annotation.Desensitization;

import java.util.Date;


/**
 * Copyright © 厦门云谷互联信息有限公司 2018-2020 All Right Reserved
 * <p>
 * 司机提现业务DTO
 *
 * @author Zerrion
 * @version 1.0.0-RELEASE
 * @since 2018-07-05 16:23
 */

public class DriverCashDto extends BaseDto {

    /**
     * 审核状态 1.审核中 2.审核成功 3.审核失败
     */
    public static final int UNDER_CHECK_STATUS = 1;
    public static final int CHECK_STATUS_SUCCESS = 2;
    public static final int CHECK_STATUS_FAILURE = 3;

    /**
     * 提现状态 1.提现中 2.提现成功 3.提现失败
     */
    public static final int UNDER_WITHDRAWAL_STATUS = 1;
    public static final int WITHDRAWAL_STATUS_SUCCESS = 2;
    public static final int WITHDRAWAL_STATUS_FAILURE = 3;

    /**
     * 第三方打款状态 1.处理中 2.打款成功 3.打款失败
     */
    public static final int THIRD_STATUS_PROCESSING = 1;
    public static final int THIRD_STATUS_SUCCESS = 2;
    public static final int THIRD_STATUS_FAILURE = 3;


    /**
     * 用户ID
     **/
    private String userUuid;
    /**
     * 提现金额
     **/
    private Double cash;
    /**
     * 审核状态（ 1：审核中、2：审核成功、3：审核失败）
     **/
    private Integer status;
    /**
     * 提现失败理由
     **/
    private String reason;
    /**
     * 执行时间
     **/
    private Date handlingOn;
    /**
     * 执行者
     **/
    private String handlingBy;
    /**
     * 付款类型（1：企业账户）
     **/
    private String payType;
    /**
     * 付款账号
     **/
    private String payAccount;
    /**
     * 付款人
     **/
    private String payName;
    /**
     * 收款账号
     **/
    private String collectAccount;
    /**
     * 收款人
     **/
    @Desensitization(type = Desensitization.DesensitionType.NAME)
    private String collectName;
    /**
     * 收款类型（1：银联卡、2：微信 、3：支付宝）
     **/
    private Integer collectType;
    /**
     * 收款人银行名称
     */
    private String collectBankName;
    /**
     * 由支付平台返回
     **/
    private String serialNum;

    /**
     * 手续费
     **/
    private Double poundage;
    /**
     * 实际到账
     **/
    private Double actualAmount;
    /**
     * 提现状态 1:提现中 2:提现成功 3提现失败
     */
    private Integer withdrawalStatus;
    /**
     * 第三方打款状态(1:处理中 2：打款成功 3：打款失败)
     */
    private Integer thirdPayStatus;
    /**
     * 提现完成时间
     */
    private Date withdrawalFinishTime;
    /**
     * 第三方返回原因
     */
    private String thirdReason;
    /**
     * 第三方提现手续费
     */
    private Double thirdPoundage;

    /**
     * 附加字段
     */
    @Desensitization(type = Desensitization.DesensitionType.MOBILE)
    private String mobile;

    /**
     * 是否可打款 0 否 1是
     *
     * @return
     */
    private Integer canRemit;

    public String getUserUuid() {
        return userUuid;
    }

    public void setUserUuid(String userUuid) {
        this.userUuid = userUuid;
    }

    public Double getCash() {
        return cash;
    }

    public void setCash(Double cash) {
        this.cash = cash;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public Date getHandlingOn() {
        return handlingOn;
    }

    public void setHandlingOn(Date handlingOn) {
        this.handlingOn = handlingOn;
    }

    public String getHandlingBy() {
        return handlingBy;
    }

    public void setHandlingBy(String handlingBy) {
        this.handlingBy = handlingBy;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getPayAccount() {
        return payAccount;
    }

    public void setPayAccount(String payAccount) {
        this.payAccount = payAccount;
    }

    public String getPayName() {
        return payName;
    }

    public void setPayName(String payName) {
        this.payName = payName;
    }

    public String getCollectAccount() {
        return collectAccount;
    }

    public void setCollectAccount(String collectAccount) {
        this.collectAccount = collectAccount;
    }

    public String getCollectName() {
        return collectName;
    }

    public void setCollectName(String collectName) {
        this.collectName = collectName;
    }

    public Integer getCollectType() {
        return collectType;
    }

    public void setCollectType(Integer collectType) {
        this.collectType = collectType;
    }

    public String getCollectBankName() {
        return collectBankName;
    }

    public void setCollectBankName(String collectBankName) {
        this.collectBankName = collectBankName;
    }

    public String getSerialNum() {
        return serialNum;
    }

    public void setSerialNum(String serialNum) {
        this.serialNum = serialNum;
    }

    public Double getPoundage() {
        return poundage;
    }

    public void setPoundage(Double poundage) {
        this.poundage = poundage;
    }

    public Double getActualAmount() {
        return actualAmount;
    }

    public void setActualAmount(Double actualAmount) {
        this.actualAmount = actualAmount;
    }

    public Integer getWithdrawalStatus() {
        return withdrawalStatus;
    }

    public void setWithdrawalStatus(Integer withdrawalStatus) {
        this.withdrawalStatus = withdrawalStatus;
    }

    public Integer getThirdPayStatus() {
        return thirdPayStatus;
    }

    public void setThirdPayStatus(Integer thirdPayStatus) {
        this.thirdPayStatus = thirdPayStatus;
    }

    public Date getWithdrawalFinishTime() {
        return withdrawalFinishTime;
    }

    public void setWithdrawalFinishTime(Date withdrawalFinishTime) {
        this.withdrawalFinishTime = withdrawalFinishTime;
    }

    public String getThirdReason() {
        return thirdReason;
    }

    public void setThirdReason(String thirdReason) {
        this.thirdReason = thirdReason;
    }

    public Double getThirdPoundage() {
        return thirdPoundage;
    }

    public void setThirdPoundage(Double thirdPoundage) {
        this.thirdPoundage = thirdPoundage;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Integer getCanRemit() {
        return canRemit;
    }

    public void setCanRemit(Integer canRemit) {
        this.canRemit = canRemit;
    }
}
